package com.ruoyi.system.service;

import com.ruoyi.system.domain.ExportStory;
import com.ruoyi.system.domain.QueClassification;
import com.ruoyi.system.domain.Story;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IStoryService {

    /**
     * 根据id查询studentId
     * @param id
     * @return
     */
    int getStudentIdById(int id);


    /**
     * 根据KEY_ID查询IM_ACCOUNT
     * @param keyId
     * @return
     */
    String getStuImByKeyId(String keyId);

    /**
     * 根据KEY_ID查询IM_ACCOUNT
     * @param keyId
     * @return
     */
    String getEmpImByKeyId(String keyId);

    /**
     * 新增小事说
     * @param story
     * @return
     */
    public boolean insertStory(Story story);


    /**
     * 查询小事说信息集合
     *
     * @return 小事说信息集合
     */
    public List<Story> selectStoryList(String studentId, String classID, String departmentID, String beginTime, String endTime) throws Exception;

    /**
     * 通过小事ID查询岗位信息
     *
     * @param id 小事ID
     * @return 角色对象信息
     */
    public Story selectStoryById(Long id);
    /**
     * 批量删除小事信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStoryByIds(String ids);


    /**
     * 批量删除小事处理信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteStorySByIds(String ids);

    /**
     * 批量删除小事聊天信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteMessageByIds(String ids);
    /**
     * 根据id查询小事的状态
     */
    public Story selectStateById(int id);

    /**
     * 根据id更改进度处理状态
     * @param id
     * @param handleState
     * @return
     */
    public int updateHandleStateAndHandleTime(int id, int handleState, String opinion);


    /**
     * 根据id更改成功进度处理状态
     * @param id
     * @param handleState
     * @return
     */
    public int updateHandleStateByCompletion(int id, int handleState);


    /**
     * 设置为无效状态
     * @param id
     * @return
     */
    public int invalidHandleState(int id);


    /**
     * 根据id更改小事分类
     * @param id
     * @return
     */
    public int updateClassId(int id, int classId);

    /**
     * 小事说的未读浏览信息数
     * @param id
     * @return
     */
    boolean updateStatusCount(@Param("id") int id);
    /**
     * 小事说的未读浏览信息数置为0
     * @param id
     * @return
     */
    boolean updateMychatcountZero(@Param("id") int id);

    /**
     * 查询所有未读聊天总数
     * @return
     */
    int selectSumChatCount();

    /**
     * 根据学生id搜索所有提交的小事说
     * @param studentId
     * @return
     */
    List<Story> selectStroyListByStudentId(@Param("studentId") int studentId);

    /**
     * 根据id查询分类id
     * @param id
     * @return
     */
    List<QueClassification> selectClassById(int id);

    /**
     * 根据id更新 答复信息
     * @param id
     * @return
     */
    int updateOpinion(int id, String opinion);

//    int updateHandleStateAndHandleTimeAndOpinion(int id, int handleState, String opinion);

    /**
     * 根据id查询opinion
     * @param storyId
     * @return
     */
    Story selectStoryOpinion(int storyId);


    /**
     * 根据id更新强制提交的次序
     * @param storyId
     * @param forcedSubmitOrder
     * @return
     */
    int updateIsForcedSubmitByIdAndHandleState(int storyId, int forcedSubmitOrder);

    /**
     * 根据id查询强制提交时间
     * @param storyId
     * @return
     */
    String selectForcedSubmitTime(int storyId);

    /**
     * 导出小事
     * @return
     */
    List<ExportStory> exportStory(String ids);
}
